package com.lx.t21_30;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
 * @author c先生
 * @date 2022年04月28日 下午 4:13:21
 * @describe
 * 编写一个程序，将输入字符串中的字符按如下规则排序。
 * 规则 1 ：英文字母从 A 到 Z 排列，不区分大小写。
 * 如，输入： Type 输出： epTy
 * 规则 2 ：同一个英文字母的大小写同时存在时，按照输入顺序排列。
 * 如，输入： BabA 输出： aABb
 * 规则 3 ：非英文字母的其它字符保持原来的位置。
 * 如，输入： By?e 输出： Be?y
 * 数据范围：输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000
 * 输入描述：
 * 输入字符串
 * 输出描述：
 * 输出字符串
 */

public class Main26 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        //收集所有的字母
        List<Character> list = new ArrayList<>();
        for(Character c : str.toCharArray()){//把字符串转化为字符集合并且遍历
            if(Character.isLetter(c)){
                list.add(c);
            }
        }
        list.sort(new Comparator<Character>(){
            public int compare(Character o1,Character o2){
                return Character.toLowerCase(o1) - Character.toLowerCase(o2);//先全部转化为小写然后比较排序
            }
        });
        StringBuilder result = new StringBuilder();
        for(int i = 0 , j = 0; i < str.length() ; i++){
            if(Character.isLetter(str.charAt(i))){
                result.append(list.get(j++));
            }else{
                result.append(str.charAt(i));
            }
        }
        System.out.println(result);
    }
}
